package cn.txun.csmall.test.rockectmq;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.junit.Test;

import java.nio.charset.StandardCharsets;

/**
 * 学习rocketmq的所有生产消息的逻辑
 */

public class MyProducer {
    /**
     * 像rocketmq发送一条消息
     */

    @Test
    public void sendTest01() throws Exception{
        //1,创建生成者，这里用的是默认MQ生产者对象
        DefaultMQProducer producer = new DefaultMQProducer();
        //对当前producer进行分组
        producer.setProducerGroup("first-producer-group");
        //设置nameserver的地址
        producer.setNamesrvAddr("localhost:9876");
        //开启生产者和MQ的连接
        producer.start();
        //2,准备消息对象，消息对象有很多属性
        Message message = new Message();
        String msg = "这是我的第一条信息";
        message.setBody(msg.getBytes(StandardCharsets.UTF_8));
        //设置消息主题，不同业务的消息，不同逻辑的消息，不同目标消息，主题不提供
        //例如，短信可以用电话号码做主题，邮件用邮箱做主题
        message.setTopic("first-topic-a");
        //设置消息标签，在消费端体现，过滤逻辑，可以设置多个，用,隔开
        //message.setTags("TagA,TagB");
        message.setTags("TagA");
        //设置消息的标识，key，
        message.setKeys("1");
        //3,执行发送，获取返回结果
        SendResult resut = producer.send(message);
        //获取的result数据，其中包含消息id，发送成功或者失败的状态，保存这条消息的队列ID
        System.out.println("发送状态："+resut.getSendStatus());
        System.out.println("消息id:"+resut.getMsgId());
        System.out.println("所在队列id："+resut.getMessageQueue());
    }

}
